unit uVisitor ;

interface

uses
   SysUtils,
   uBasic,
   uPlacement,
   uObjects,
   uViewSchematic,
   uViewPCB ;

type

   EVisitor = class( Exception ) ;

   TMedaVisitor = class
   private
   public
      function VisitNode( Instance : TMedaViewable ) : TObject ; overload ; virtual ;

      // views
      function VisitNode( Instance : TMedaView ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMSPOutline ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMSPBank ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMSPShape ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMSPWire ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMSPTrack ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMSPPin ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMSPLabel ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMSPPad ) : TObject ; overload ; virtual ;

      // viewers
      function VisitNode( Instance : TMedaLayer ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaPCBInterface ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaPage ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaSchInterface ) : TObject ; overload ; virtual ;

      // objects
      function VisitNode( Instance : TMedaObject ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaVisible ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaContainer ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaVisibleContainer ) : TObject ; overload ; virtual ;

      function VisitNode( Instance : TMedaRatsNest ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaPart ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaBank ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaPin ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaLabel ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaPower ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaNet ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaPort ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaWire ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaTrack ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaVia ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaCopper ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaShape ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaStack ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaPad ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaModule ) : TObject ; overload ; virtual ;
      function VisitNode( Instance : TMedaProject ) : TObject ; overload ; virtual ;
   end ;

implementation

{ TMedaVisitor }

function TMedaVisitor.VisitNode( Instance : TMedaBank ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaPin ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaNet ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaPart ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaObject ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaVisible ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaContainer ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaVisibleContainer ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaWire ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaStack ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaPad ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaModule ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaProject ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaShape ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaTrack ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaVia ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaCopper ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaView ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMSPWire ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMSPTrack ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMSPLabel ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMSPOutline ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMSPBank ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMSPShape ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMSPPad ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaSchInterface ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaPage ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaViewable ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMSPPin ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaRatsNest ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaLayer ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaPCBInterface ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaLabel ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaPower ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

function TMedaVisitor.VisitNode( Instance : TMedaPort ) : TObject ;
begin
   raise EVisitor.Create( Instance.ClassName ) ;
end ;

end.

